package com.hzlj.position.locate.common.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fz.common.base.core.JacksonTypeHandlerIgnoreNull;
import com.hzlj.position.config.common.dto.common.PositionHandleExtDTO;
import com.hzlj.position.locate.common.dto.position.PositionExtDTO;
import lombok.Data;
import lombok.ToString;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 定位记录-分表(PositionNewest)实体类
 *
 * @author lifh
 * @since 2023-03-16 21:48:42
 */
@Data
@ToString
@TableName(value = "position_newest", autoResultMap = true)
public class PositionNewest {
    /**
     * 主键
     */
    @TableId(type = IdType.INPUT, value = "id")
    private String id;
    /**
     * 机构ID全路径
     */
    @TableField(value = "jg_code")
    private String jgCode;
    /**
     * 机构名称
     */
    @TableField(value = "jg_mc")
    private String jgMc;
    /**
     * 矫正ID(jz_jbxx)
     */
    @TableField(value = "jz_id")
    private String jzId;
    /**
     * 矫正人员名称
     */
    @TableField(value = "xm")
    private String xm;
    /**
     * 设备编号
     */
    @TableField(value = "device_code")
    private String deviceCode;
    /**
     * 定位渠道类型,dict-LOCATE_CHANNEL_TYPE
     */
    @TableField(value = "channel_type")
    private String channelType;
    /**
     * 定位渠道,dict-LOCATE_CHANNEL
     */
    @TableField(value = "channel")
    private String channel;
    /**
     * 点验方式,dict-REPORT_TYPE
     */
    @TableField(value = "report_type")
    private String reportType;
    /**
     * 经度
     */
    @TableField(value = "longitude")
    private String longitude;
    /**
     * 纬度
     */
    @TableField(value = "latitude")
    private String latitude;
    /**
     * 位置描述
     */
    @TableField(value = "position",keepGlobalFormat = true)
    private String position;
    /**
     * 定位时间-由设备产生
     */
    @TableField(value = "position_time")
    private Date positionTime;
    /**
     * 告警类型,dict-LOCATE_WARNING_TYPE
     */
    @TableField(value = "warning_type")
    private String warningType;
    /**
     * 是否是告警记录
     */
    @TableField(value = "warning")
    private Boolean warning;
    /**
     * 区域外出状态，出省市区: 0未外出 1出省 2出市 3出区
     */
    @TableField(value = "area_out_type")
    private String areaOutType;
    /**
     * 是否在请假中-只针对坐标越界的情况下才有值
     */
    @TableField(value = "leaving")
    private Boolean leaving;
    /**
     * 同步状态,dict-TBZT
     */
    @TableField(value = "sync_status")
    private String syncStatus;
    /**
     * 定位的额外数据,json-PositionExtDTO
     */
    @TableField(value = "position_ext", typeHandler = JacksonTypeHandlerIgnoreNull.class)
    private PositionExtDTO positionExt;
    /**
     * 数据编号，数据提供者，只做备份
     */
    @TableField(value = "external_data_id")
    private String externalDataId;
    /**
     * 定位跟踪标记,每个标记6位,平台核查,矫正对象上报,平台通知工作人员
     */
    @TableField(value = "warning_track_flag")
    private BigDecimal warningTrackFlag;
    /**
     * 数据业务类型,比如power_off_sys_check系统核查关机等
     */
    @TableField(value = "`data_type`")
    private String dataType;
    /**
     * 系统核查标记,0核查中 1核查正常 2核查异常,dict-POSITION_SYS_CHECK
     */
    @TableField(value = "`sys_check`")
    private String sysCheck;
    /**
     * 处理状态,dict-HANDLE_STATUS
     */
    @TableField(value = "handle_status")
    private String handleStatus;
    /**
     * 异常处理时间,当前更新时间
     */
    @TableField(value = "handle_time")
    private Date handleTime;
    /**
     * 异常处理数据,json-PositionHandleExtDTO
     */
    @TableField(value = "handle_ext", typeHandler = JacksonTypeHandlerIgnoreNull.class)
    private PositionHandleExtDTO handleExt;
    /**
     * 更新时间
     */
    @TableField(value = "update_time")
    private Date updateTime;
    /**
     * 更新人
     */
    @TableField(value = "updater_uid")
    private String updaterUid;
    /**
     * 更新人姓名
     */
    @TableField(value = "updater_name")
    private String updaterName;
    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private Date createTime;
    /**
     * 创建人
     */
    @TableField(value = "creator_uid")
    private String creatorUid;
    /**
     * 更新人姓名
     */
    @TableField(value = "creator_name")
    private String creatorName;
}
